package qjc.g_链表;

import com.链表.练习题.ListNode;

public class g9_两两交换链表中的节点 {
    /**
     * 创建一个虚拟头节点，方便操作，初始化指针 cur，指向虚拟头节点，
     * 遍历链表，每次处理两个节点，获取当前节点对的第一个节点，
     * 获取当前节点对的第二个节点，交换两个节点，
     * 移动 cur 指针到下一对节点的前一个节点
     */
    public ListNode swapPairs(ListNode head) {
        ListNode s = new ListNode(-1,head);
        ListNode cur = s;
        while (cur.next != null && cur.next.next != null){
            ListNode start = cur.next;
            ListNode end = cur.next.next;

            cur.next = end;
            start.next = end.next;
            end.next = start;
            cur = start;
        }
        return s.next;
    }
}
